package com.ea.modular.dao.sys;

import java.util.List;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.ea.common.node.ZTreeNode;
import com.ea.common.parent.dao.BaseDao;
import com.ea.modular.model.sys.Role;
/**
 * 角色接口
 * @author jun
 *
 */
public interface RoleDao extends BaseDao<Role>{

	/**
	 * 为角色授权菜单
	 * @param roleId
	 * @param menuIds
	 * @return
	 */
	int setAuthority(@Param("roleId") String roleId,@Param("list") List<String> menuIds,@Param("userId") String userId);
	
	
	/**
	 * 删除角色授权菜单
	 * @param roleId
	 * @return
	 */
	int deleteAuthority(@Param("roleId") String roleId);
	
	
	/**
	 * 根据用户ID获取所关联的角色
	 * @param userId
	 * @return
	 */
	List<String> getRoleIds(@Param("userId") String userId);
	
	
	/**
	 * 根据角色ID组获取所关联的角色
	 * @param roleIds
	 * @return
	 */
	Set<String> getRoleNames(@Param("list") List<String> roleIds);
	
	
	/**
	 * 获取所有角色树
	 * @return
	 */
	List<ZTreeNode> roleTreeList();
	
	/**
	 * 根据用户ID和角色IDS获取所关联的角色
	 * @param userId
	 * @param roleIds
	 * @return
	 */
	List<ZTreeNode> roleTreeListByUserId(@Param("list") List<String> roleIds);
	
	
	
	
	/**
	 * 为用户授权角色
	 * @param roleId
	 * @param menuIds
	 * @return
	 */
	int setUserRoleAuthority(@Param("userId") String userId,@Param("list") List<String> roleIds,@Param("sessionId") String sessionId);
	
	
	/**
	 * 删除用户授权角色
	 * @param roleId
	 * @return
	 */
	int deleteUserRole(@Param("userId") String userId);
}
